Mac OS Sound

| Previous | Chapter Contents | Chapter Top | Next |

Converting to 32-bit Little Endian Data

A code example for converting to 32 bit little endian data is shown in Listing 5.

Listing 10 Converting to Little Endian

OSErr ConvertToLittleEndian(Ptr inputPtr, Ptr outputPtr)
{
    SoundConverter sc;
    SoundComponentData inputFormat, outputFormat;
    unsigned long inputFrames, inputBytes;
    unsigned long outputFrames, outputBytes;
    void *littleEndianAtomsList;
    OSErr    err;

    inputFormat.flags = 0;
    inputFormat.format = k16BitBigEndianFormat;
    inputFormat.numChannels = 1;
    inputFormat.sampleSize = 16;
    inputFormat.sampleRate = rate22050hz;
    inputFormat.sampleCount = 0;
    inputFormat.buffer = nil;
    inputFormat.reserved = 0;

    outputFormat.flags = 0;
    outputFormat.format = k32BitFormat;
    outputFormat.numChannels = 1;
    outputFormat.sampleSize = 16;
    outputFormat.sampleRate = rate22050hz;
    outputFormat.sampleCount = 0;
    outputFormat.buffer = nil;
    outputFormat.reserved = 0;

    err = SoundConverterOpen(&inputFormat, &outputFormat, &sc);
    if (err != noErr) return (err);

    err = SoundConverterGetBufferSizes(sc, kOurInputBytesTarget,
                            &inputFrames,&inputBytes, &outputBytes);
    if (err != noErr) return (err);

    err = CreateAudioAtomsList(k32BitFormat, true,
                                &littleEndianAtomsList);
    if (err != noErr) return (err);

    err = SoundConverterSetInfo(sc, siCompressionParams,
                                littleEndianAtomsList);
    if (err != noErr) return (err);

    err = SoundConverterBeginConversion(sc);
    if (err != noErr) return (err);

    err = SoundConverterConvertBuffer(sc, inputPtr, inputFrames,
                                outputPtr,&outputFrames, &outputBytes);
    if (err != noErr) return (err);

    err = SoundConverterEndConversion(sc, outputPtr, &outputFrames,
                                        &outputBytes);
    if (err != noErr) return (err);

    err = SoundConverterClose(sc);
    if (err != noErr) return (err);
}

© 1998 Apple Computer, Inc.

| Previous | Chapter Contents | Chapter Top | Next |